#ifndef HS_LIST_H
#define HS_LIST_H
#define LLIST_FORWARD    1
#define LLIST_BACKWARD   2
struct llist_node_st
{
	struct llist_node_st *prev;
	struct llist_node_st *next;
	char data[0];
};
typedef struct{
	int size;//数据部分大小
	struct llist_node_st head;//链表的头结点
}LLIST;
LLIST * llist_create(int size);
int llist_insert(LLIST *ptr,const void *data,int mode);

void llist_travel(LLIST *ptr,void (*llist_op)(void *));

void * llist_find(LLIST *ptr,const void *key,int (*cmp)(const void *,const void *));
int llist_delete(LLIST *ptr,const void *key,int (*cmp)(const void *,const void *));
void llist_destroy(LLIST *ptr);
int llist_fetch(LLIST *ptr,const void *key,void * data,int (*cmp)(const void *,const void *));

#endif
